[Previous][Up] Reference for unit 'fpTemplate' (#fcl)

Basic usage of the template parser

TTemplateParser allows you to replace variables in template text with actual values. Variables are enclosed in delimiters (by default { and }).

The following example demonstrates basic template parsing with simple variables:

program BasicTemplateExample;

{$mode objfpc}{$h+}

uses
  fpTemplate, SysUtils;

var
  Parser: TTemplateParser;
  Template, Result: string;
begin
  Parser := TTemplateParser.Create;
  try
    // Set up template values
    Parser.Values['Name'] := 'John Doe';
    Parser.Values['Age'] := '30';
    Parser.Values['City'] := 'Amsterdam';

    // Define template text
    Template := 'Hello {Name}! You are {Age} years old and live in {City}.';

    // Parse the template
    Result := Parser.ParseString(Template);

    WriteLn(Result);
  finally
    Parser.Free;
  end;
end.

This will output:

Hello John Doe! You are 30 years old and live in Amsterdam.

You can also use an event handler to provide values dynamically:

program EventTemplateExample;

{$mode objfpc}{$h+}

uses
  fpTemplate, SysUtils;

type
  TEventHandler = class
    procedure GetParamValue(Sender: Objectt ParamName: string; out AValue: string);
  end;

procedure TEventHandler.GetParamValue(Sender: Objectt ParamName: string; out AValue: string);
begin
  case ParamName of
    'CurrentDate': AValue := DateToStr(Now);
    'CurrentTime': AValue := TimeToStr(Now);
    'UserName': AValue := GetEnvironmentVariable('USER');
  else
    AValue := 'Unknown';
  end;
end;

var
  Parser: TTemplateParser;
  Handler: TEventHandler;
  Template, Result: string;
begin
  Parser := TTemplateParser.Create;
  Handler := TEventHandler.Create;
  try
    // Assign event handler
    Parser.OnGetParam := @Handler.GetParamValue;

    // Define template text
    Template := 'Date: {CurrentDate}, Time: {CurrentTime}, User: {UserName}';

    // Parse the template
    Result := Parser.ParseString(Template);

    WriteLn(Result);
  finally
    Handler.Free;
    Parser.Free;
  end;
end.

The TFPTemplate class provides a higher-level interface that can load templates from files:

program FileTemplateExample;

{$mode objfpc}{$h+}

uses
  fpTemplate, SysUtils;

type
  TEventHandler = class
    procedure GetParamValue(Sender: Objectt ParamName: string; out AValue: string);
  end;

procedure TEventHandler.GetParamValue(Sender: Objectt ParamName: string; out AValue: string);
begin
  case ParamName of
    'Title': AValue := 'Welcome Page';
    'Content': AValue := 'This is the main content of the page.';
    'Footer': AValue := 'Copyright 2024 Example Company';
  else
    AValue := '';
  end;
end;

var
  Template: TFPTemplate;
  Handler: TEventHandler;
  Result: string;
begin
  Template := TFPTemplate.Create;
  Handler := TEventHandler.Create;
  try
    // Set template content directly
    Template.Template := '';

    // Assign event handler
    Template.OnGetParam := @Handler.GetParamValue;

    // Get parsed content
    Result := Template.GetContent;

    WriteLn(Result);
  finally
    Handler.Free;
    Template.Free;
  end;
end.

See also

TTemplateParser

  

A class to parse templates.

TFPTemplate

  

Template component.

TFPCustomTemplate

  

Base class for templates.


Documentation generated on: Jan 27 2026